package leecode

func maximumLengthSubstring(s string) int {
	left := 0
	var result int
	hashMap := make(map[byte]int) //key为窗口内的字符 , value为出现的次数
	for right := 0; right < len(s); {
		hashMap[s[right]]++
		if hashMap[s[right]] > 2 {
			result = max(result, right-left) // 更新结果
			for hashMap[s[right]] > 2 {
				hashMap[s[left]]--
				left++
			}
		}
		right++
	}
	result = max(result, len(s)-left) // 考虑最后一个子串的情况
	return result
}
